#pragma once
#include "ISplitter.hpp"
#include <iostream>
//具体类
class BinarySplitter : public ISplitter
{
   public:
    virtual ISplitter *clone() override
    {
        return new BinarySplitter(*this);
    }
    void split() override
    {
        std::cout << "run BinarySplitter ..." << std::endl;
    }
};

class TxtSplitter : public ISplitter
{
   public:
    virtual ISplitter *clone() override
    {
        return new TxtSplitter(*this);
    }
    void split() override
    {
        std::cout << "run TxtSplitter ..." << std::endl;
    }
};

class PictureSplitter : public ISplitter
{
   public:
    virtual ISplitter *clone() override
    {
        return new PictureSplitter(*this);
    }
    void split() override
    {
        std::cout << "run PictureSplitter ..." << std::endl;
    }
};

class VideoSplitter : public ISplitter
{
   public:
    virtual ISplitter *clone()
    {
        return new VideoSplitter(*this);
    }
    void split() override
    {
        std::cout << "run VideoSplitter ..." << std::endl;
    }
};
